package com.framework.templates;

import freemarker.template.*;

import java.io.*;
import java.util.Map;

/**
 * Created by fusf on 2016/6/12.
 */
public class TemplateUtil {

    /**
     * 生成模板工具类
     */
    public static void buildTemplate(String packageDir, String ftlName, String outName, Map root) {
        Configuration cfg = new Configuration(Configuration.VERSION_2_3_21);
        cfg.setDefaultEncoding("utf-8");
        try {
            // 从哪里加载模板文件
            cfg.setDirectoryForTemplateLoading(new File(System.getProperty("user.dir") + "/src/main/resources"));
            // 设置对象包装器
            cfg.setObjectWrapper(new DefaultObjectWrapper(Configuration.VERSION_2_3_21));
            // 设置异常处理器
            cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
            // 定义数据模型
    /*        Map root = new HashMap();
            root.put("abc", "世界，你好");*/
            // 通过freemarker解释模板，首先需要获得Template对象
            Template template = cfg.getTemplate("templates/" + ftlName + ".ftl");

            String outDir = System.getProperty("user.dir") + packageDir;
            File file = new File(outDir);
            if (!file.exists() && !file.isDirectory()) {
                System.out.println("创建目录:" + packageDir);
                file.mkdirs();
            }
            // 定义模板解释完成之后的输出
            PrintWriter out = new PrintWriter(new BufferedWriter(
                    new FileWriter(outDir + "/" + outName)));
            try {
                // 解释模板
                template.process(root, out);
            } catch (TemplateException e) {
                e.printStackTrace();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
